package com.sg.dto.biz.app.req;

import com.sg.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.io.Serializable;

/**
 * @desc ImplementTargetContentAccountAddOrSubtractComReqDto
 * @使用场景
 */
@Data
public class ImplementTargetContentAccountAddOrSubtractComReqDto
        extends BaseDto
        implements Serializable {

    /**
     * 关联归属主体ID
     */
    @NotNull(message = "关联归属主体ID不能为空")
    @ApiModelProperty("关联归属主体ID")
    private String accountObjectId;

    /**
     * 关联归属主体类型编码 TARGET:目标 TARGET_CATEGORY:目标分类 OBJECTIVE:指标 DEPT:部门
     */
    @NotNull(message = "关联归属主体类型编码不能为空")
    @ApiModelProperty("关联归属主体类型编码")
    private String accountObjectTypeCode;

    /**
     * 当前内容标识
     */
    @NotNull(message = "当前内容标识不能为空")
    @ApiModelProperty("当前内容标识")
    private String currentContentCode;

    /**
     * 冗余评价模板ID
     */
    @NotNull(message = "冗余评价模板ID不能为空")
    @ApiModelProperty("冗余评价模板ID")
    private String evaluationTemplateId;

    /**
     * 账单金额
     */
    @NotNull(message = "账单金额不能为空")
    @ApiModelProperty("账单金额")
    private Double billAmount;

    /**
     * 收支类型 INCOME:收入 SPENDING:支出
     */
    @NotNull(message = "收支类型不能为空")
    @ApiModelProperty("收支类型")
    private String billTypeCode;

    /**
     * 账户关联主体类型 CONTENT_TYPE:内容分类 ORGANIZATIONAL_STRUCTURE_TYPE:组织架构分类
     */
    @NotNull(message = "账户关联主体类型不能为空")
    @ApiModelProperty("账户关联主体类型")
    private String accountObjectClass;

    /**
     * 是否预算账户 TRUE:是 FALSE:否
     */
    @NotNull(message = "是否预算账户不能为空")
    @ApiModelProperty("是否预算账户")
    private String isBudgetAccount;

    /**
     * 账户操作类型 ADD_BUDGET:增预算 DEC_BUDGET:减预算 USE_BUDGET:使用预算 AVAILABLE_AMOUNT_EXPENDITURE:可用金额支出 AVAILABLE_AMOUNT_INCOME:可用金额收入
     */
    @NotNull(message = "账户操作类型不能为空")
    @ApiModelProperty("账户操作类型")
    private String accountOptType;

    /**
     * 是否组织正式财务标准 TRUE:是 FALSE:否
     */
    @NotNull(message = "是否组织正式财务标准不能为空")
    @ApiModelProperty("是否组织正式财务标准")
    private String isOrgOfficialAccountNom;

    /**
     * 流水业务故事信息
     */
    @NotNull(message = "流水业务故事信息不能为空")
    @ApiModelProperty("流水业务故事信息")
    private String billBizStory;

    /**
     * 对方logo
     */
    @NotNull(message = "对方logo不能为空")
    @ApiModelProperty("对方logo")
    private String oppositeLogo;

    /**
     * 对方名称
     */
    @NotNull(message = "对方名称不能为空")
    @ApiModelProperty("对方名称")
    private String oppositeName;

    /**
     * 冗余内容科目ID
     */
    @ApiModelProperty("冗余内容科目ID")
    private String contnetAccountSubjectld;

    /**
     * 冗余资金来源ID
     */
    @ApiModelProperty("冗余资金来源ID")
    private String capitalSourceId;

}
